/* hc128.h
** 
** Copyright (c) 2007, Matt Hamrick, Siobhan Murtagh & Damon Orecks
** All rights reserved.
** 
** Redistribution  and  use  in  source  and  binary  forms,  with  or  without
** modification, are permitted provided that the following conditions are met:
** 
**  * Redistributions of  source code must  retain the above  copyright notice,
**    this list of conditions and the following disclaimer.
** 
**  * Redistributions in binary form must reproduce the above copyright notice,
**    this list of conditions and the following disclaimer in the documentation
**    and/or other materials provided with the distribution.
** 
**  * Neither  the  name  of the  DangerThink  Project  nor  the names  of  its
**    contributors may be used to endorse or promote products derived from this
**    software without specific prior written permission.
** 
** THIS SOFTWARE IS PROVIDED BY  THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY  EXPRESS OR IMPLIED WARRANTIES,  INCLUDING, BUT NOT  LIMITED TO, THE
** IMPLIED WARRANTIES  OF MERCHANTABILITY AND FITNESS FOR  A PARTICULAR PURPOSE
** ARE DISCLAIMED.  IN NO  EVENT SHALL THE  COPYRIGHT OWNER OR  CONTRIBUTORS BE
** LIABLE  FOR  ANY  DIRECT,   INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR
** CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT  LIMITED  TO,  PROCUREMENT  OF
** SUBSTITUTE GOODS  OR SERVICES;  LOSS OF USE,  DATA, OR PROFITS;  OR BUSINESS
** INTERRUPTION)  HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY,  WHETHER IN
** CONTRACT,  STRICT LIABILITY,  OR  TORT (INCLUDING  NEGLIGENCE OR  OTHERWISE)
** ARISING IN ANY WAY  OUT OF THE USE OF THIS SOFTWARE,  EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
**
** $Id: hc128.h 15 2007-05-11 05:36:17Z matthew.hamrick $
*/

#ifndef _H_HC128
#define _H_HC128

#include <dt_lower_cipher.h>
#include <sys/types.h>

typedef struct {
} hc128;

DTErr hc128_new( hc128 **cipher );
DTErr hc128_delete( hc128 *cipher );
DTErr hc128_key( hc128 *cipher, char *key );
DTErr hc128_iv( hc128 *cipher, char *iv );
DTErr hc128_init( hc128 *cipher );
DTErr hc128_keystream( hc128 *cipher, char *output, unsigned int length, unsigned int *bytes_written );
DTErr hc128_encrypt( hc128 *cipher, char *input, unsigned int input_length, char *output, unsigned int output_length, unsigned int *bytes_written );
DTErr hc128_decrypt( hc128 *cipher, char *input, unsigned int input_length, char *output, unsigned int output_length, unsigned int *bytes_written );
DTErr hc128_seek( hc128 *cipher, DTSeekMode mode, int offset );
DTErr hc128_clear( hc128 *cipher );
#endif
